package pe.com.bbva.modpre.dominio;

import javax.persistence.*;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

import pe.com.bbva.modpre.dominio.util.AuditoriaBean;

/**
 * The persistent class for the SEG_USUARIO database table.
 * 
 */
@Entity
@Table(name="SEG_USUARIO")
@SuppressWarnings("serial")
public class Usuario extends AuditoriaBean {

	@Id
	@Column(unique=true, nullable=false, precision=16)
	@GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_USUARIO")
	@TableGenerator(name = "SEQ_USUARIO", table = "SEQ_ENTIDAD", pkColumnName = "ENTIDAD", initialValue = 1,
	valueColumnName = "ULTIMO_ID", pkColumnValue = "pe.com.bbva.modpre.dominio.Usuario", allocationSize = 1)
	private Long id;

	@Column(length=4)
	private String cargo;

	@Column(length=45)
	private String correo;

	@Column(name="DESC_CARGO", length=45)
	private String descCargo;

	@Column(name="DESC_OFICINA", length=45)
	private String descOficina;

	@Column(nullable=false, length=150)
	private String materno;

	@Column(nullable=false, length=200)
	private String nombres;

	@Column(length=4)
	private String oficina;

	@Column(nullable=false, length=150)
	private String paterno;

	@Column(nullable=false, length=7)
	private String registro;
	
	@Column(name="REGION_TERRITORIO", length=45)
	private String regionTerritorio;
	
	@Column(name="DESC_REGION_TERRITORIO", length=45)
	private String descRegionTerritorio;
	
	@Transient
	private Rol rol;
	public Rol getRol() { return rol; }
	public void setRol(Rol rol) { this.rol = rol; }
	
	@Transient
	private Equipo equipo;
	public Equipo getEquipo() { return equipo; }
	public void setEquipo(Equipo equipo) { this.equipo = equipo; }
	
	@Transient
	private String superior;
	public String getSuperior() { return superior; }
	public void setSuperior(String superior) { this.superior = superior; }

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getCargo() {
		return this.cargo;
	}

	public void setCargo(String cargo) {
		this.cargo = cargo;
	}

	public String getCorreo() {
		return this.correo;
	}

	public void setCorreo(String correo) {
		this.correo = correo;
	}

	public String getDescCargo() {
		return this.descCargo;
	}

	public void setDescCargo(String descCargo) {
		this.descCargo = descCargo;
	}

	public String getDescOficina() {
		return this.descOficina;
	}

	public void setDescOficina(String descOficina) {
		this.descOficina = descOficina;
	}

	public String getMaterno() {
		return this.materno;
	}

	public void setMaterno(String materno) {
		this.materno = materno;
	}

	public String getNombres() {
		return this.nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	public String getOficina() {
		return this.oficina;
	}

	public void setOficina(String oficina) {
		this.oficina = oficina;
	}

	public String getPaterno() {
		return this.paterno;
	}

	public void setPaterno(String paterno) {
		this.paterno = paterno;
	}

	public String getRegistro() {
		return this.registro;
	}

	public void setRegistro(String registro) {
		this.registro = registro;
	}
	
	public String getRegionTerritorio() {
		return regionTerritorio;
	}
	
	public void setRegionTerritorio(String regionTerritorio) {
		this.regionTerritorio = regionTerritorio;
	}
	
	public String getDescRegionTerritorio() {
		return descRegionTerritorio;
	}
	
	public void setDescRegionTerritorio(String descRegionTerritorio) {
		this.descRegionTerritorio = descRegionTerritorio;
	}
	
	public String getNombreCompleto() {
		return nombres+" "+paterno+" "+materno ;
	}
	
	public String getRegistroNombreCompleto(){
		return registro+" - "+nombres+" "+paterno+" "+materno ;
	}
	
	@Override
	public int hashCode() {
		HashCodeBuilder hashCodeBuilder = new HashCodeBuilder(3, 7);
		hashCodeBuilder.append(id);
		return hashCodeBuilder.toHashCode();
	}

	@Override
	public boolean equals(Object obj) {
		boolean equals = false;
		if (obj instanceof Usuario) {
			Usuario bean = (Usuario) obj;
			EqualsBuilder equalsBuilder = new EqualsBuilder();
			equalsBuilder.append(id, bean.id);
			equals = equalsBuilder.isEquals();
		}
		return equals;
	}
	@Override
	public String toString() {
		return "Usuario [id=" + id + ", cargo=" + cargo + ", correo=" + correo
				+ ", descCargo=" + descCargo + ", descOficina=" + descOficina
				+ ", materno=" + materno + ", nombres=" + nombres
				+ ", oficina=" + oficina + ", paterno=" + paterno
				+ ", registro=" + registro + ", regionTerritorio="
				+ regionTerritorio + ", descRegionTerritorio="
				+ descRegionTerritorio + ", rol=" + rol + ", equipo=" + equipo
				+ ", superior=" + superior + "]";
	}


}